package br.praticas.projetoacademia.dao;

import br.praticas.projetoacademia.models.Contato;
import br.praticas.projetoacademia.models.Endereco;
import br.praticas.projetoacademia.util.HibernateUtil;
import br.praticas.projetoacademia.models.Instrutor;
import java.util.ArrayList;
import java.util.List;
//import org.apache.log4j.LogManager;
//import org.apache.log4j.Logger;
import org.hibernate.classic.Session;

/**
 *
 * @author Lucia
 */
public class InstrutorDao {

    private Session sessao;
   

    public void add(Instrutor instrutor, Contato contato, Endereco endereco) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        sessao.beginTransaction();
        sessao.save(instrutor);
        //LOGGER.info("Instrutor salvo");
        sessao.getTransaction().commit();
        sessao.close();
        //LOGGER_PADRAO.info("Finalizado!");
    }
    
    public void update(Instrutor instrutor, Contato contato, Endereco endereco) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        sessao.beginTransaction();
        sessao.update(instrutor);
        sessao.save(contato);
        sessao.save(endereco);
        sessao.getTransaction().commit();
        sessao.close();
    }

    public void remove(Instrutor instrutor, Contato contato, Endereco endereco) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        sessao.beginTransaction();
        sessao.delete(instrutor);
        sessao.save(contato);
        sessao.save(endereco);
        sessao.getTransaction().commit();
        sessao.close();
    }

    public List<Instrutor> listarInstrutor() {
        sessao = HibernateUtil.getSessionFactory().openSession();
        List<Instrutor> lista = sessao.createCriteria(Instrutor.class).list();
        sessao.close();
        return lista;
    }

    public Instrutor Retornainstrutor(Long id) {
        sessao = HibernateUtil.getSessionFactory().openSession();
        sessao.beginTransaction();
        Instrutor instrutor = (Instrutor) sessao.get(Instrutor.class, id);
        sessao.getTransaction().commit();
        sessao.close();
        return instrutor;
    }

    public Instrutor BuscarInstrutor(int index) {
        List<Instrutor> lista = new ArrayList<>();
        Instrutor instrutorRetorno = null;
        lista = listarInstrutor();
        int cont = 0;
        for (Instrutor instrutor : lista) {
            if (cont == index) {
                instrutorRetorno = instrutor;
                break;
            }
        }
        return instrutorRetorno;
    }

    public Session getSessao() {
        return this.sessao;
    }

}
